﻿using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using BolsaTalentos.DataContextClasses;

namespace BolsaTalentos.BLL
{
    public class Documento
    {
        // Campos
        private int id;        
        private string nombre;
        private string contenido;
        private string destinatario;
        private Nullable<int> tiempoEnvio;

        // Propiedades
        public int ID
        {
            get { return this.id; }
            //set { this.id = value; }
        }
        public string Nombre
        {
            get { return this.nombre; }
            set { this.nombre = value.Trim(); }
        }
        public string Contenido
        {
            get { return this.contenido; }
            set { this.contenido = value.Trim(); }
        }
        public string Destinatario
        {
            get { return this.destinatario; }
            set { this.destinatario = value.Trim(); }
        }
        public Nullable<int> TiempoEnvio
        {
            get { return this.tiempoEnvio; }
            set { this.tiempoEnvio = value; }
        }

        //Constructores
        public Documento(int IDToSearch)
        {
            try
            {
                DataClassesDataContext DB = new DataClassesDataContext();

                DataContextClasses.TipoDocumento Doc = (from d in DB.TipoDocumentos
                                                        where d.ID == IDToSearch
                                                        select d).First();

                this.id = Doc.ID;
                this.nombre = Doc.Descripcion;
                this.contenido = Doc.Contenido;
                this.tiempoEnvio = Doc.TiempoEnvioSemanas;
                this.destinatario = Doc.Destinatario;
            }
            catch (SqlException SqlEx)
            {
                throw new Exception("No existe tal documento \n" + SqlEx.Message);
            }
        }
        public Documento(string NewNombre, string NewContenido, string NewDestinatario, int NewTiempoEnvio) 
        {
            this.nombre = NewNombre;
            this.contenido = NewContenido;
            this.tiempoEnvio = NewTiempoEnvio;
            this.destinatario = NewDestinatario;
        }

        public void Insertar() 
        {
            DataClassesDataContext DB = new DataClassesDataContext();
            try
            {
                DataContextClasses.TipoDocumento TipoDocumentoToInsert = new DataContextClasses.TipoDocumento();

                TipoDocumentoToInsert.Descripcion = this.nombre;
                TipoDocumentoToInsert.Contenido = this.contenido;
                TipoDocumentoToInsert.Destinatario = this.destinatario;
                TipoDocumentoToInsert.TiempoEnvioSemanas = this.tiempoEnvio;

                DB.TipoDocumentos.InsertOnSubmit(TipoDocumentoToInsert);

                DB.SubmitChanges();
            }
            catch (SqlException SqlEx)
            {
                throw new Exception("Hubo un problema con la Base de datos\n" + SqlEx.Message);
            }
        }
        public void Actualizar()
        {
            DataClassesDataContext DB = new DataClassesDataContext();
            try
            {
                DataContextClasses.TipoDocumento TipoDocumentoToUpdate = (from td in DB.TipoDocumentos
                                                                          where td.ID == this.id
                                                                          select td).First();

                TipoDocumentoToUpdate.ID = this.id;
                TipoDocumentoToUpdate.Descripcion = this.nombre;
                TipoDocumentoToUpdate.Contenido = this.contenido;
                TipoDocumentoToUpdate.Destinatario = this.destinatario;
                TipoDocumentoToUpdate.TiempoEnvioSemanas = this.tiempoEnvio;
 
                DB.SubmitChanges();
            }
            catch (SqlException SqlEx)
            {
                throw new Exception("Hubo un problema con la base de datos\n" + SqlEx.Message);
            }
        }
    }
}
